package com.wongoing.apiclient.weixin;

import java.util.HashMap;
import java.util.Map;

import com.wongoing.apiclient.weixin.WXPayConstants.SignType;
import com.wongoing.util.LogService;

/**
 * 功能说明：此类封装微信支付对外接口
 * 修改说明：
 * @author 吴兆强
 * @date 2018年6月19日 下午10:59:02
 * @version V0.1
 */
public interface IWxPayManager {
	
	/**
	 * 功能说明：返回直接调起APP操作的微信H5调起方式
	 * 修改说明：
	 * @author 吴兆强
	 * @date 2018年6月19日 下午5:14:56
	 * @param out_trade_no 商户订单号
	 * @param total_fee 总金额
	 * @param body 商品描述
	 * @param product_id 产品ID
	 * @param ip 请求IP
	 * @return
	 * @throws Exception
	 */
	public String wxH5Pay(String out_trade_no, String total_fee, String body,String product_id, String ip) throws Exception;
	
	/**
	 * 功能说明：微信公众号支付
	 * 修改说明：
	 * @author 吴兆强
	 * @date 2018年6月19日 下午10:23:48
	 * @param openid 微信openId
	 * @param outTradeNo 商户订单号
	 * @param totalFee 总金额
	 * @param body 商品描述
	 * @param productId 产品ID
	 * @param ip 请求IP
	 * @return
	 * @throws Exception
	 */
	public Map<String,String> wxPublicAccountPay(String openid, String outTradeNo, String totalFee, String body, String productId, String ip) throws Exception;

	/**
	 * 功能说明：微信网页扫码支付调起接口
	 * 修改说明：
	 * @author 吴兆强
	 * @date 2018年6月28日 上午8:36:55
	 * @param out_trade_no 商户订单号
	 * @param total_fee 总金额
	 * @param body 描述 
	 * @param product_id 产品ID
	 * @param ip 地址
	 * @return
	 * @throws Exception 
	 */
	public String wxWebScanQRCodePay(String out_trade_no, String total_fee, String body, String product_id, String ip, String returnUrl) throws Exception;

	/**
	 * 功能说明：微信订单产讯统一入口
	 * 修改说明：
	 * @author 吴兆强
	 * @date 2018年6月28日 上午9:42:19
	 * @param outTradeNo 商户订单号
	 * @return
	 * @throws Exception 
	 */
	public Map<String,String> wxPayQuery(String outTradeNo) throws Exception;
	
	/**
	 * 功能说明：微信退款统一入口
	 * 修改说明：
	 * @author 吴兆强
	 * @date 2018年7月3日 下午3:11:40
	 * @param out_trade_no
	 * @param out_refund_no
	 * @param total_fee
	 * @param refund_fee
	 * @return
	 * @throws Exception
	 */
	public Map<String, String> wxPayRefund(String out_trade_no,
			String out_refund_no,
			String total_fee,
			String refund_fee) throws Exception;
}
